package org.mbcorp.sar.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table
public class Experticia implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Embeddable
	public static class Id implements Serializable {

		private static final long serialVersionUID = 1L;

		@Column
		private Integer idOperador;

		@Column
		private Integer idNivelCompetencia;

		public Id() {
		}

		public Id(int idOperador, int idNivelCompetencia){
			this.idNivelCompetencia = idNivelCompetencia;
			this.idOperador = idOperador;
		}
		
		public boolean equals(Object o){
			if (o != null && o instanceof Id){
				Id that = (Id)o;
				return this.idNivelCompetencia.equals(that.idNivelCompetencia) &&
						this.idOperador.equals(that.idOperador);
			} else {
				return false;
			}
		}
		
		public int hashCode(){
			return idNivelCompetencia.hashCode() + idOperador.hashCode();
		}
		
	}
	
	@EmbeddedId
	private Id id = new Id();
	
	@JoinColumn(name = "idOperador", insertable = false, updatable = false)
	@ManyToOne
	private Operador operador;
	
	@JoinColumn(name = "idNivelCompetencia", insertable = false, updatable = false)
	@ManyToOne
	private NivelCompetencia nivelCompetencia;
	
	@Column
	private Double tiempoEjercido;

	public Id getId() {
		return id;
	}

	public void setId(Id id) {
		this.id = id;
	}

	public Operador getOperador() {
		return operador;
	}

	public void setOperador(Operador operador) {
		this.operador = operador;
	}

	public NivelCompetencia getNivelCompetencia() {
		return nivelCompetencia;
	}

	public void setNivelCompetencia(NivelCompetencia nivelCompetencia) {
		this.nivelCompetencia = nivelCompetencia;
	}

	public Double getTiempoEjercido() {
		return tiempoEjercido;
	}

	public void setTiempoEjercido(Double tiempoEjercido) {
		this.tiempoEjercido = tiempoEjercido;
	}
	
	
	

}
